home *** CD-ROM | disk | FTP | other *** search
/ Best of www.BestZips.com (Collector's Edition) / Best of WWW.BESTZIPS.COM Collector's Edition (JCSM Shareware) (JCS Marketing).ISO / menues__ / 4nt252.zip / SAMPLES.BTM < prev    next >
Text File  |  1996-04-17  |  14KB  |  508 lines

  1. @echo off
  2. cls
  3. echo %@upper[%0]:
  4. text
  5.  
  6.      This file contains several sample batch files.  We invite you to study
  7.      them in conjunction with your 4DOS/NT manual and documentation. You
  8.      may want to PRINT or LIST the contents and modify any part you wish.
  9.      The various segments are separated from each other by a line of
  10.      hyphens ("-") so you can easily extract the specific component you're
  11.      most interested in.
  12.  
  13.      Included are:
  14.  
  15.        STATUS.BTM    - Gives a quick description of your system.
  16.        4MENU.BTM     - A very simple menuing system.
  17.        ONCEADAY.BTM  - Runs a command during the first boot of the day.
  18.      * FRAC.BTM      - Computes the fractional part of a number
  19.      * HMENU.BTM     - A powerful menuing system which you must customize
  20.                        for your system.
  21.      * WHICH.BTM     - Ready to use convenient way to detect "WHICH" process
  22.                        (internal command, alias, executable extension,
  23.                        external command, or batch file) is run when you
  24.                        invoke a command.
  25.  
  26.    * Note: These three batch files were originally contributed by long-time 
  27.            4DOS user and supporter Ray Tackett. Thanks, Ray!
  28. endtext
  29. pause
  30.  
  31. : ---------------------------------------------------------------------
  32. rem STATUS.BTM
  33. rem
  34. rem      This sample batch file will use some internal 4DOS/NT variable
  35. rem      functions to try to describe your current configuration.
  36. rem
  37. cls
  38. echo. & echo.
  39. echo System status:
  40. echo.
  41. echo Date: %_dow %_date
  42. echo Time: %_time
  43. echo 4DOS/NT version: %_4ver
  44. echo OS: %_dos
  45. echo %_dos version: %_dosver
  46. echos `CPU: `
  47. iff %_cpu == 386 then
  48.   echo 80386
  49. elseiff %_cpu == 486 then
  50.   echo 80486
  51. endiff
  52. if %_ndp ne 0 echo %_ndp Numeric Coprocessor detected
  53. quit
  54.  
  55.  
  56. : ---------------------------------------------------------------------
  57. : 4MENU.BTM
  58. :      This sample batch file will create a simple "menu" to run
  59. :      your commonly used programs.
  60. :
  61. :      Note that, instead of REM statements, it uses the alternative
  62. :      practice of creating "do-nothing" labels by starting comment
  63. :      lines such as this one with a ":"
  64. :
  65. @echo off
  66. :      First, we define a couple of aliases which will be used several
  67. :      times in the remainder of this batch file, after first saving
  68. :      any existing alias by the same name with the SETLOCAL command.
  69. setlocal
  70. alias in `pushd %1 & %2$ & popd`
  71. alias choice `elseiff "%userchoice" == "%1" then`
  72. :
  73. :       Start with a clear screen
  74. cls
  75. :dispmenu
  76. :       Position the cursor
  77. screen 8 0
  78. :       Display the menu choices
  79. text
  80.  
  81.  Enter your choice:
  82.  
  83.       0. EXIT
  84.       1. Word Processing
  85.       2. Spreadsheet
  86.       3. Communications
  87.  
  88. endtext
  89. :      Ask the user to enter a value for environment variable CHOICE
  90. inkey Which? %%userchoice
  91. :      Does the user want to exit the menu?
  92. iff "%userchoice" == "0" then & quit
  93. :      Check the valid options
  94. :      Each line correspond to a menu choice
  95. :      The paranmeters are a directory to go to, then the program to run
  96.   choice 1 & in c:\letters c:\ws\ws.exe
  97.   choice 2 & in d:\finance c:\quattro\q.exe
  98.   choice 3 & in c:\comm    c:\procomm\pcplus.exe /fprofile
  99. else
  100. :      The user entered an invalid option
  101.   scrput 23 0 bri whi on red Invalid choice, try again
  102. endiff
  103. :      Loop back to the beginning
  104. goto dispmenu
  105.  
  106.  
  107. : ---------------------------------------------------------------------
  108. : ONCEADAY.BTM
  109. @echo off
  110. :
  111. :       This batch file will start a specified command the first time it
  112. :       called each day after 6:00 in the morning
  113. :       example:
  114. :               ONCEADAY CHKDSK C:
  115. :
  116. :      Note that, instead of REM statements, it uses the alternative
  117. :      practice of creating "do-nothing" labels by starting comment
  118. :      lines such as this one with a ":"
  119. :
  120. :
  121. :       First, we reset environment variable LASTDATE after saving any
  122. :       current value it may already have with the SETLOCAL command
  123. setlocal
  124. set lastdate=0
  125. :       Is there already a file called ONCEADAY.DAT in the
  126. :       root directory of the boot drive?
  127. iff exist %_boot:\onceaday.dat then
  128. :       If so, set LASTDATE to the contents of the first line
  129.   set lastdate=%@line[%_boot:\onceaday.dat,0]
  130. endiff
  131. :       Is the date in the file greater than today's date?
  132. :       (the @DATE function turns a date into an integer number)
  133. iff %@date[%_date] gt %lastdate then
  134. :       If so, is it currently past 6:00? (an arbitrary time)
  135.   iff %@time[%_time] gt %@time[06:00] then
  136. :       Yes! Invoke whatever command was passed as an argument to this
  137. :       batch file, then return
  138.     call %$
  139. :       After executing the command, place today's date in integer
  140. :       format into file ONCEADAY.DAT
  141.     echo %@date[%_date] >! %_boot:\onceaday.dat
  142.   endiff
  143. endiff
  144. :
  145.  
  146.  
  147. : ---------------------------------------------------------------------
  148. : FRAC.BTM
  149. @echo off
  150. rem 4DOS/NT provides an internal function, @int[], but not a way
  151. rem to get the fractional part of a number.  Here's a tool.
  152. rem This is also a simple illustration of modifying an environment
  153. rem variable whose name is passed in.
  154.  
  155. rem The key lesson in this example is the use and modification of
  156. rem the VALUE of a variable given its NAME in %1.
  157.  
  158. rem This .btm is meant to be CALLed from another batch file.
  159. rem
  160. if "%1" == "" .or. "%[%1]" == "" goto help
  161. rem  !                !
  162. rem  !                The VALUE of variable "name"
  163. rem  The NAME of a variable
  164.  
  165.  
  166. rem The following sets the given variable to the fractional part.
  167. rem Note the function nesting.
  168.  
  169. rem The third argument of @substr is omitted, referring to the rest
  170. rem of the string by default
  171.  
  172. rem The length of the integer portion is used as the offset into the
  173. rem string to begin and extract the fraction portion.
  174.  
  175. set %1=%@substr[%[%1],%@len[%@int[%[%1]]]]
  176. :exit
  177. quit 0
  178.  
  179. :help
  180. rem
  181. rem  Note the use of the name of the command the user typed, even
  182. rem  though this .btm file may have been renamed.
  183. rem
  184. echo Usage: %@name[%0]  var
  185. echo.
  186. echo   var =  Any environment variable whose value is the input
  187. echo New value returned in var, replacing original value.
  188. echo New value is the fraction portion of a floating point value.
  189. echo Example: set foo=12.345
  190. echo          %@name[%0] foo
  191. echo          set foo
  192. echo          .345
  193. quit 4
  194.  
  195.  
  196. : ---------------------------------------------------------------------
  197. :  HMENU.BTM
  198.  
  199. rem This batch file will NOT run on your system without modification, and
  200. rem is provided as an example only.
  201.  
  202. @echo off
  203. cd d:\
  204. cd c:\
  205. set lastx=0
  206. set lasty=0
  207. :start
  208. unset thingie tofile fromfile wtf>& nul
  209. cls
  210. drawbox 0 0 24 79 2 white on blue fill blue
  211. scrput 2  8 white on blue --------- Function Keys ------   ------ Shift Function Keys ------
  212. scrput 3  8 white on blue f1  Kings                        *f1  Gomoku
  213. scrput 5  8 white on blue f2  Show document directory      *f2  Communications
  214. scrput 7  8 white on blue f3  Manual command               *f3  First Publisher
  215. scrput 9  8 white on blue f4  Edit a document              *f4  Shooting gallery
  216. scrput 11 8 white on blue f5  Mahjongg                     *f5  Breakout
  217. scrput 13 8 white on blue f6  Solitare                     *f6  Reset Trackball
  218. scrput 15 8 white on blue f7  Copy a file                  *f7  DB3+
  219. scrput 17 8 white on blue f8  Envelope on Daisy Wheel      *f8  Epson printer page eject
  220. scrput 19 8 white on blue f9  Epson printer reset          *f9  Super Fly
  221. scrput 21 8 white on blue f10 Command Line                 *f10 Shut down system
  222. iff "%lastx%" ne "0" then & scrput %lasty% %lastx% bright white on blue @ & endiff
  223. rem drawvline 0 39 25 1 white on blue
  224. :timeloop
  225. screen 0 0
  226. scrput 1 30 white on blue %_date   %_time
  227. inkey /w1 %%WTF
  228. if "%WTF%" == "" goto timeloop
  229. rem
  230. if %WTF% == @59 goto dof1
  231. if %WTF% == @60 goto dof2
  232. if %WTF% == @61 goto dof3
  233. if %WTF% == @62 goto dof4
  234. if %WTF% == @63 goto dof5
  235. if %WTF% == @64 goto dof6
  236. if %WTF% == @65 goto dof7
  237. if %WTF% == @66 goto dof8
  238. if %WTF% == @67 goto dof9
  239. if %WTF% == @68 goto dof10
  240. if %WTF% == @84 goto doshf1
  241. if %WTF% == @85 goto doshf2
  242. if %WTF% == @86 goto doshf3
  243. if %WTF% == @87 goto doshf4
  244. if %WTF% == @88 goto doshf5
  245. if %WTF% == @89 goto doshf6
  246. if %WTF% == @90 goto doshf7
  247. if %WTF% == @91 goto doshf8
  248. if %WTF% == @92 goto doshf9
  249. if %WTF% == @93 goto doshf10
  250. if %WTF% == @113 goto doshf10
  251. rem
  252. goto start
  253. :dof1
  254.  set lastx=11
  255.  set lasty=3
  256.  c:\games\kings
  257.  goto start
  258. :dof2
  259.  cls
  260.  dir /4apv c:\budnick\*.*
  261.  pause
  262.  set lastx=11
  263.  set lasty=5
  264.  goto start
  265. :dof3
  266.  scrput 2 27 bright yel on blue "?" will abort the command
  267.  scrput 8 8 white on blue Command:
  268.  scrput 8 16 bright yellow on blue _____________________________________________________________
  269.  screen 8 16
  270.  input %%thingie
  271.  cls
  272.  if "%thingie%" == "?" goto start
  273.  set lastx=11
  274.  set lasty=7
  275.  %thingie%
  276.  pause
  277.  goto start
  278. :dof4
  279.  scrput 2 27 bright yel on blue "?" will abort the command
  280.  scrput 10 8 white on blue Document name:
  281.  scrput 10 22 bright yellow on blue ____________
  282.  screen 10 22
  283.  input %%thingie
  284.  if "%thingie%" == "?" goto start
  285.  set lastx=11
  286.  set lasty=9
  287.  cls
  288.  rem call hdb %thingie%
  289.  ws c:\budnick\%thingie%
  290.  fr
  291.  goto start
  292. :dof5
  293.  scrput 12 8 white on blue Board number:
  294.  scrput 12 21 bright yellow on blue ______
  295.  screen 12 21
  296.  input %%thingie
  297.  set lastx=11
  298.  set lasty=11
  299.  iff "%thingie%" == "" then & c:\games\mahjongg -y -f -m -n & 
  300.           else & c:\games\mahjongg -y -f -m -n -b%thingie% & endiff
  301.  goto start
  302. :dof6
  303.  keystack "NNS1Hanny" 13 "YYY" 0 0 "x" & c:\games\solitare
  304.  set lastx=11
  305.  set lasty=13
  306.  goto start
  307. :dof7
  308.  scrput 2 27 bright yel on blue "?" will abort the command
  309.  scrput 16 8 white on blue Copy from:
  310.  scrput 16 18 bright yellow on blue ___________________________________________________
  311.  screen 16 18
  312.  input %%fromfile
  313.  if "%fromfile%" == "" goto dof7
  314.  if "%fromfile%" == "?" goto start
  315.  if not exist %fromfile% goto dof7
  316. :doof7
  317.  scrput 16 8 white on blue Copy to:
  318.  scrput 16 16 bright yellow on blue ____________________________________________________
  319.  screen 16 16
  320.  input %%tofile
  321.  if "%tofile%" == "?" goto start
  322.  if "%tofile%" == "" goto doof7
  323.  set lastx=11
  324.  set lasty=15
  325.  cls
  326.  copy %fromfile% %tofile%
  327.  pause
  328.  goto start
  329. :dof8
  330.  scrput 2 27 bright yel on blue "?" will abort the command
  331.  scrput 18 8 white on blue Document name:
  332.  scrput 18 22 bright yellow on blue ____________
  333.  screen 18 22
  334.  input %%thingie
  335.  if "%thingie%" == "" goto dof8
  336.  if "%thingie%" == "?" goto start
  337.  if not exist c:\budnick\%thingie% goto dof8
  338.  set lastx=11
  339.  set lasty=17
  340.  envelope c:\budnick\%thingie% /c > com2
  341.  goto start
  342. :dof9
  343.  pinit
  344.  set lastx=11
  345.  set lasty=19
  346.  goto start
  347. :dof10
  348.  unset wtf
  349.  cls
  350.  echo type HMENU at any prompt to return to the main menu
  351.  quit
  352. :doshf1
  353.  set lastx=45
  354.  set lasty=3
  355.  c:\games\gomoku
  356.  goto start
  357. :doshf2
  358.  cls
  359.  call tc
  360.  set lastx=45
  361.  set lasty=5
  362.  goto start
  363. :doshf3
  364.  e:
  365.  cd e:\pub
  366.  fp
  367.  cd e:\
  368.  c:
  369.  colset 17 50 5a 03
  370.  set lastx=45
  371.  set lasty=7
  372.  goto start
  373. :doshf4
  374.  to c:\games & shoot & fr
  375.  set lastx=45
  376.  set lasty=9
  377.  goto start
  378. :doshf5
  379.  c:\games\breakout S-6
  380.  set lastx=45
  381.  set lasty=11
  382.  goto start
  383. :doshf6
  384.  trakball dos
  385.  set lastx=45
  386.  set lasty=13
  387.  goto start
  388. :doshf7
  389.  trakball dbase & to db3 & dbase & fr
  390.  set lastx=45
  391.  set lasty=15
  392.  goto start
  393. :doshf8
  394.  pff
  395.  set lastx=45
  396.  set lasty=17
  397.  goto start
  398. :doshf9
  399.  pushd c:\games
  400.  fly
  401.  popd
  402.  set lastx=45
  403.  set lasty=19
  404.  goto start
  405. :doshf10
  406.  cls
  407.  sysdown
  408.  quit
  409.  
  410.  
  411. : ---------------------------------------------------------------------
  412. :  WHICH.BTM
  413. rem Determine "WHICH" command will be executed -- internal,
  414. rem alias, external, executable extension, etc.
  415.  
  416. rem None of the rems is necessary to proper operation and may be
  417. rem deleted for ordinary use.
  418.  
  419. setlocal
  420.  
  421. rem See if a command to check was supplied.
  422.  
  423. iff "%1" == "" then & echo Syntax: which command & quit
  424.  else
  425.  rem
  426.  rem separate the name and the extension (if any)
  427.  rem
  428.  set targ=%@upper[%@name[%1]]
  429.  set ex=%@upper[%@ext[%1]]
  430. endiff
  431.  
  432. rem Skip some stuff if no extension
  433.  
  434. if "%ex" == "" goto noext
  435.  
  436. rem See if the extension is one of the usual executables
  437.  
  438. if %ex == COM .or. %ex == EXE .or. %ex == BTM .or. %ex == BAT goto catext
  439.  
  440. rem There is an extension, but it's not a normal executable.  See if there's
  441. rem such an extension in the environment -- i.e., a user-defined executable
  442. rem extension.
  443.  
  444. set ey=.%ex
  445. iff "%[%ey]" ne "" then
  446.  
  447.    rem It's a defined executable extension.  Tell the user.
  448.  
  449.    echo Executable extension: %@upper[%[%ey]]
  450.  
  451.    rem Now find out whether the program which is supposed to be run
  452.    rem against the executable extension file is there!
  453.  
  454.    iff "%@path[%[%ey]]" == "" then
  455.      %0 %@name[%[%ey]].%@ext[%[%ey]]
  456.    endiff
  457.    iff not exist %@full[%[%ey]] then
  458.      echo Extension program not found
  459.    endiff
  460.  else
  461.    echo Executable extension .%ex definition not found
  462. endiff
  463.  goto cleanup
  464.  
  465. rem Above was for executable extensions.  What follows is the branch
  466. rem label for normal executables (.BTM, .BAT, .COM, and .EXE)
  467.  
  468. :catext
  469.  
  470. rem Put the file name back together with its extension.
  471.  
  472. set targ=%targ.%ex
  473. :noext
  474.  
  475. rem Check for alias or internal first, because they would be found first.
  476.  
  477. iff isalias %targ then
  478.   echos Alias:` `
  479.   alias %targ
  480.   goto cleanup
  481.  elseiff isinternal %targ then
  482.   echo %@upper[%1] is an internal command
  483.   goto cleanup
  484. endiff
  485.  
  486. rem It wasn't an alias or an internal, look down the PATH
  487.  
  488. set targ=%@search[%targ]
  489. iff "%targ" ne "" then
  490.   iff "%@ext[%targ]" == "bat" .or. "%@ext[%targ]" == "btm" then
  491.     echo Batch File: %targ
  492.   else
  493.     echo Program: %targ
  494.   endiff
  495. else
  496.  echo %@upper[%1] is an unknown command!
  497.  beep
  498. endiff
  499. goto cleanup
  500. :cleanup
  501. endlocal
  502.  
  503. rem The branches to "cleanup" and the "endlocal" are not strictly necesary.
  504. rem They could all have been "quit", but I like programs to have a single
  505. rem exit point and exit in a way which is obviously clean.
  506.  
  507. 
  508.